#ifndef MAPPERGXROM_H
#define MAPPERGXROM_H

#include "Mapper.h"
PNE_NAMESPACE_BEGIN
struct MapperGxROM : public Mapper
{
    MapperGxROM(Cartridge &cart, std::function<void(void)> mirroring_callback);
    NameTableMirroring GetNameTableMirroring();
    void WritePRG(Address addr, Byte value) override;
    Byte ReadPRG(Address addr) override;

    Byte ReadCHR(Address addr) override;
    void WriteCHR(Address addr, Byte value) override;

    Byte prgbank;
    Byte chrbank;

private:
    NameTableMirroring m_mirroring;
    std::vector<Byte> m_characterRAM;
    std::function<void(void)> m_mirroringCallback;
};

PNE_NAMESPACE_END

#endif // MAPPERGXROM_H

// DONE